e0c757
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2010 the original author or authors.
+ * Copyright 2002-2013 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -66,18 +66,17 @@
import org.springframework.core.Constants;
  * You will get the same effect with non-transactional reads, but lazy fetching
  * of JDBC Connections allows you to still perform reads in transactions.
  *
- * <p><b>NOTE:</b> This DataSource proxy needs to return wrapped Connections to
- * handle lazy fetching of an actual JDBC Connection. Therefore, the returned
- * Connections cannot be cast to a native JDBC Connection type like OracleConnection,
- * or to a connection pool implementation type. Use a corresponding
- * NativeJdbcExtractor to retrieve the native JDBC Connection.
+ * <p><b>NOTE:</b> This DataSource proxy needs to return wrapped Connections
+ * (which implement the {@link ConnectionProxy} interface) in order to handle
+ * lazy fetching of an actual JDBC Connection. Therefore, the returned Connections
+ * cannot be cast to a native JDBC Connection type such as OracleConnection or
+ * to a connection pool implementation type. Use a corresponding
+ * {@link org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor}
+ * or JDBC 4's {@link Connection#unwrap} to retrieve the native JDBC Connection.
  *
  * @author Juergen Hoeller
  * @since 1.1.4
- * @see ConnectionProxy
  * @see DataSourceTransactionManager
- * @see org.springframework.orm.hibernate3.HibernateTransactionManager
- * @see org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor
  */
 public class LazyConnectionDataSourceProxy extends DelegatingDataSource {
 
@@ -407,7 +406,13 @@
public class LazyConnectionDataSourceProxy extends DelegatingDataSource {
 
 				// Apply kept transaction settings, if any.
 				if (this.readOnly) {
-					this.target.setReadOnly(this.readOnly);
+					try {
+						this.target.setReadOnly(this.readOnly);
+					}
+					catch (Exception ex) {
+						// "read-only not supported" -> ignore, it's just a hint anyway
+						logger.debug("Could not set JDBC Connection read-only", ex);
+					}
 				}
 				if (this.transactionIsolation != null &&
 						!this.transactionIsolation.equals(defaultTransactionIsolation())) {
